<?php

namespace Lib;

class Member {

	// field_type 含义
	// < 0 共享字段，> 0 应用专属字段，type 绝对值 < 0x7f 的将进行唯一性判断
	const Type_UserName = -0x1;//用户名
	const Type_Email = -0x2;//Email
	const Type_Mobile = -0x3;//手机
	const Type_OpenID_QQ = -0x4;//QQ OPENID
	const Type_OpenID_WX = -0x5;//微信 OPENID
	const Type_PassWord = -0x80;//密码
	const Type_PassWordHash = -0x81;//密码掩码

	const Ret_Success = 0;
	const Ret_Exist = -1;
	const Ret_NotExist = -2;
	const Ret_NotInit = -3;

	/**
	 * 通过字段添加用户资料
	 * @param array $fields
	 * @return array
	 * @throws Exception
	 */
	public static function AddByFields(array $fields): array {
	}

	/**
	 * 通过UUID添加用户资料
	 * @param int $uuid
	 * @param array $fields
	 * @return array|int[]
	 * @throws Exception
	 */
	public static function AddByUUID(int $uuid, array $fields): array {
	}

	/**
	 * 通过 UUID 更新用户资料
	 * @param int $uuid
	 * @param array $fields
	 * @return array|int[]
	 * @throws Exception
	 */
	public static function UpdateByUUID(int $uuid, array $fields): array {
	}

	/**
	 * 按照 UUID 获取全部用户资料
	 * @param int $uuid
	 * @return array
	 * @throws Exception
	 */
	public static function GetByUUID(int $uuid) {
	}

	/**
	 * 按照用户资料查找用户，并获取全部用户资料
	 * @param int $fieldType
	 * @param mixed $fieldValue
	 * @return array|int[]
	 * @throws Exception
	 */
	public static function GetByField(int $fieldType, mixed $fieldValue): array {
	}

    /**
     * 拉取用户列表
     * @param array $limit
     * @param string $fieldType
     * @param string|null $fieldValue
     * @param string $order
     * @return array|int[]
     * @throws Exception
     */
    public static function List(array $limit = array(), string $fieldType = '', string $fieldValue = null, string $order = 'ASC'): array {
        
    }

	/**
	 * 按照 uuid 数组批量获取用户
	 * @param array $uuids
	 * @param array $fieldTypes
	 * @return array|int[]
	 * @throws Exception
	 */
	public static function ListByUUIDs(array $uuids, array $fieldTypes) {
	}

	/**
	 * 删除用户指定的资料
	 * @param array $fields
	 * @return int
	 * @throws Exception
	 */
	public static function RemoveField(array $fields): int {
	}

	/**
	 * 删除用户的所有资料
	 * @param int $uuid
	 * @return int
	 * @throws Exception
	 */
	public static function RemoveByUUID(int $uuid): int {
	}

	/**
	 * 按照用户资料查找用户，并删除用户的所有资料
	 * @param int $fieldType
	 * @param mixed $fieldValue
	 * @return int
	 * @throws Exception
	 */
	public static function RemoveByField(int $fieldType, mixed $fieldValue): int {
	}

	/**
	 * 统计用户数
	 * @return int
	 * @throws Exception
	 */
	public static function CountBySetID(): int {
	}

}
